package com.itcast.arrays;

import com.itcast.Array.Student;

import java.util.Arrays;
import java.util.Comparator;

/*
 (2)  如果是引用类型如何排序??
    第一种:
        在"实体类"中添加比较的方法,但是比较方法的方法名必须符合规则, 符合Comparable的规则,我们实现这个接口, 重写比较方法,
        在方法内部, 写上比较的内容
    第二种:
        第一种缺点, 实体类是我们自己写的还好, 我们可以在自己类中添加比较方法, 但是如果我们是给第三方的类排序,那么第一种就不行了
        需要我们定义比较器的实现类, 这个类单独出来, 没有任何类有关系, 即便我们需要排序的是别人的类也无所谓的以后排序都建议使用第二种!!!!
        Arrays.sort(数组, Comparator com);
 */
public class Test3 {

    public static void main(String[] args) {

        Student[] arr = {
                new Student("aaa", 18, 170, 65, 100),
                new Student("bbb", 17, 179, 70, 10),
                new Student("ccc", 15, 177, 55, 20),
                new Student("ddd", 19, 176, 50, 15),
                new Student("eee", 16, 180, 52, 90),
        };
        //Arrays.sort(arr);
        Arrays.sort(arr, new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                return (int) (o1.getHeight() - o2.getHeight());
            }
        });
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}
